home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / taropyon / cci / eupplay.cci < prev    next >
Text File  |  1993-11-30  |  4KB  |  175 lines

  1. /*************************************************************************
  2. *    "eupplay.cci" : EUP データの演奏
  3. *************************************************************************/
  4.  
  5. #include    "ccilib.h"
  6.  
  7. /*    パレットデータ(HEwin 配色)    */
  8. char    PltDat[3][16] =
  9. {
  10.     /* G R  B                                */
  11.     { 0, 0, 0},    /* C_BALCK, C_THROUGH        */
  12.     { 0, 0, 0},    /* C_BLUE , C_MBLACK         */
  13.     { 7, 7, 8},    /* C_RED                    */
  14.     {12,12,13},    /* C_MAGENTA                */
  15.     { 6, 5, 7},    /* C_GREEN                    */
  16.     { 8, 7, 9},    /* C_CYAN                    */
  17.     {10, 9,11},    /* C_YELLOW                    */
  18.     {11,11,12},    /* C_WHITE                    */
  19.  
  20.     { 5, 5, 6},    /* C_HBALCK                    */
  21.     { 0, 0,11},    /* C_HBLUE                    */
  22.     { 0,11, 0},    /* C_HRED                    */
  23.     { 0,11,11},    /* C_HMAGENTA                */
  24.     {11, 0, 0},    /* C_HGEEN                    */
  25.     {11, 0,11},    /* C_HCYAN                    */
  26.     {11,11, 0},    /* C_HYELLOW                */
  27.     {14,14,15}    /* C_HWHITE                    */
  28. };
  29.  
  30. char    *SndPtr = NULL;
  31.  
  32. int        set_title()
  33. {
  34.     DSP_writePage(1);        /* 書き込みページ            */
  35.     DSP_setPlt( PltDat );    /* パレット設定                */
  36.     DSP_title("EUPPLAY","0.99",C_HWHITE,C_WHITE,C_MBLACK,C_HBLACK);
  37.     evt_setDspTime( 1, 432, 4, C_WHITE, C_MBLACK );    /* 時刻表示アイドリング処理設定    */
  38.     SYL_clear();
  39. }
  40.  
  41. /*************************************************************************
  42. *    初期化
  43. *************************************************************************/
  44.  
  45. int        init()
  46. {
  47.     if ( (SndPtr = calloc(16384,1)) == NULL )
  48.         exit(1);            /* error */
  49.     SND_init( SndPtr );        /* サウンドBIOS初期化        */
  50.     EUP_init(1);            /* EUP の初期化                */
  51.  
  52.     DSP_sysInit(0);            /* 表示システム初期化        */
  53.     KBF_sysInit();            /* キーボードシステム初期化    */
  54.     KBF_kan_off();
  55.     FDL_sysInit();            /* ファイルダイアログ初期化    */
  56.  
  57.     sdk_control(0);            /* サイドワーク起動禁止        */
  58.  
  59.     DSP_writePage(0);        /* 書き込みページ            */
  60.     DSP_setPlt( PltDat );    /* パレット設定                */
  61.     DSP_boxf(0,24,639,463,PSET,COLMIX(5,6));
  62.  
  63.     set_title();
  64. }
  65.  
  66. /*************************************************************************
  67. *    終了
  68. *************************************************************************/
  69.  
  70. int        term()
  71. {
  72.     FDL_sysEnd();
  73.     KBF_sysEnd();
  74.     DSP_sysEnd();
  75.     EUP_term(1);
  76.     if ( SndPtr )
  77.     {
  78.         SND_end();
  79.         free(SndPtr);
  80.         SndPtr = NULL;
  81.     }
  82. }
  83.  
  84. /*************************************************************************
  85. *    EUP データの演奏
  86. *************************************************************************/
  87.  
  88. int        eup_play()
  89. {
  90.     int        i, x, y, ret, mute, x0, y0;
  91.     int        meas, meas2, clk;
  92.     char    *fdl;
  93.     char    *fn;
  94.     char    *dlg;
  95.     char    *eupSqr;
  96.  
  97.     eupSqr = NULL;
  98.     x = y = DLGPOS_CENTER_OF_SCN;
  99.     if ( (fdl = FDL_open(0)) == NULL )
  100.         return (ERR);
  101.     FDL_set_title( fdl, "EUP PLAY");
  102.     FDL_set_wildcard( fdl, "*.eup");
  103.     for(;;)
  104.     {
  105.         ret = FDL_start(fdl);
  106.         if ( ret != NORMAL )
  107.             break;
  108.         fn = FDL_get_filename(fdl);
  109.         if ( *fn == '\0' )
  110.             continue;
  111.  
  112.         if ( (eupSqr = EUP_open()) == NULL )
  113.         {
  114.             FDL_close(fdl);
  115.             return (ERR);
  116.         }
  117.         if ( EUP_load( eupSqr, fn ) )
  118.         {
  119.             MNU_sure( x, y, C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY),
  120.                 SELBTN_ATT_CENTER, "    %s    \n    EUP LOAD ERROR!!    ", fn );
  121.         } else
  122.         {
  123.             if ( EUP_setup(eupSqr) )
  124.             {
  125.                 MNU_sure( x, y, C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY),
  126.                     SELBTN_ATT_CENTER, "    %s    \n    EUP SETUP ERROR!!    ", fn );
  127.             }
  128.             SND_get_elevol_mute(&mute);
  129.             SND_elevol_mute(mute | 3);
  130.             EUP_play(eupSqr,0,0);
  131.             meas2 = -1;
  132.             while ( EUP_getPlayFlag(eupSqr) )
  133.             {
  134.                 EUP_getPlayMeasClock(eupSqr,&meas,&clk);
  135.                 if ( meas != meas2 )
  136.                 {
  137.                     SYL_puts(C_HGREEN,"meas %4d", meas + 1 );
  138.                     meas2 = meas;
  139.                 }
  140.                 if( kbhit() || MOS_pget(&x0,&y0) )
  141.                     break;
  142.                 EVT_idl();
  143.             }
  144.             SYL_clear();
  145.             SND_elevol_mute(mute);
  146.             EUP_stop(eupSqr);
  147.         }
  148.         if ( eupSqr )
  149.         {
  150.             EUP_close(eupSqr);
  151.             eupSqr = NULL;
  152.         }
  153.         while ( MOS_pget(&x0,&y0) )
  154.             ;
  155.         KBF_clear();
  156.     }
  157.     FDL_close(fdl);
  158.  
  159.     return (NORMAL);
  160. }
  161.  
  162. /*************************************************************************
  163. *    MAIN
  164. *************************************************************************/
  165.  
  166. int        main( int argc, char **argv )
  167. {
  168.     init();
  169.  
  170.     eup_play();
  171.  
  172.     term();
  173.     return (0);
  174. }
  175.